package pe.com.bbva.efcap.servidor.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.annotation.PostConstruct;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import pe.com.bbva.efcap.servidor.bean.IndicadorBean;
import pe.com.bbva.efcap.servidor.bean.PeriodoCuentaBean;
import pe.com.bbva.efcap.servidor.modelo.entidad.DetalleSimulacion;
import pe.com.bbva.efcap.servidor.modelo.entidad.Indicador;
import pe.com.bbva.efcap.servidor.servicio.DetalleSimulacionService;
import pe.com.bbva.efcap.servidor.servicio.IndicadorService;

@Component("ratioMB") 
@Scope("request")
public class RatioController implements Serializable{

	private static final long serialVersionUID = 1L;
	private static final Logger LOGGER = LoggerFactory.getLogger(ProyeccionController.class);

	@Autowired
	private DetalleSimulacionService detSimulac;
	
	@Autowired
	private IndicadorService indicador;	
	
	private Integer simulationCode;
	
//	New fields
	private List<IndicadorBean> indicadorListRIF;
	private List<PeriodoCuentaBean> detalleListRIF;		
	private List<IndicadorBean> indicadorListRIE;
	private List<PeriodoCuentaBean> detalleListRIE;	
	
	@PostConstruct
	public void init() {
		try{
			indicadorListRIF = new ArrayList<IndicadorBean>();
			listarIndicadorRIF();
			detalleListRIF = new ArrayList<PeriodoCuentaBean>();
			listarDetalleRIF();
			indicadorListRIE = new ArrayList<IndicadorBean>();
			listarIndicadorRIE();
			detalleListRIE = new ArrayList<PeriodoCuentaBean>();
			listarDetalleRIE();
		} catch (Exception e) {
			LOGGER.error("ProyeccionController -> init" + e.getMessage(), e);
		}
	}
	
	public DetalleSimulacionService getDetSimulac() {
		return detSimulac;
	}
	
	public void setDetSimulac(DetalleSimulacionService detSimulac) {
		this.detSimulac = detSimulac;
	}
	
	public Integer getSimulationCode() {
		simulationCode = 1;
		return simulationCode;
	}

	public void setSimulationCode(Integer simulationCode) {
		this.simulationCode = simulationCode;
	}

	public IndicadorService getIndicador() {
		return indicador;
	}
	public void setIndicador(IndicadorService indicador) {
		this.indicador = indicador;
	}

	public List<IndicadorBean> getIndicadorListRIF() {
		return indicadorListRIF;
	}

	public void setIndicadorListRIF(List<IndicadorBean> indicadorListRIF) {
		this.indicadorListRIF = indicadorListRIF;
	}

	public List<PeriodoCuentaBean> getDetalleListRIF() {
		return detalleListRIF;
	}	

	public void setDetalleListRIF(List<PeriodoCuentaBean> detalleListRIF) {
		this.detalleListRIF = detalleListRIF;
	}

	public List<IndicadorBean> getIndicadorListRIE() {
		return indicadorListRIE;
	}

	public void setIndicadorListRIE(List<IndicadorBean> indicadorListRIE) {
		this.indicadorListRIE = indicadorListRIE;
	}

	public List<PeriodoCuentaBean> getDetalleListRIE() {
		return detalleListRIE;
	}

	public void setDetalleListRIE(List<PeriodoCuentaBean> detalleListRIE) {
		this.detalleListRIE = detalleListRIE;
	}	
	
	public void listarIndicadorRIF(){
		indicadorListRIF = indicador.obtenerListaIndicadoresPorCatalogo("RIF");
	}
	
	public void listarDetalleRIF(){
		detalleListRIF = detSimulac.getPeriodoCuentas(getSimulationCode(), "RIF" , "0");
	}
	
	public void listarIndicadorRIE(){
		indicadorListRIE = indicador.obtenerListaIndicadoresPorCatalogo("RIE");
	}
	
	public void listarDetalleRIE(){
		detalleListRIE = detSimulac.getPeriodoCuentas(getSimulationCode(), "RIE" , "0");
	}

}
